/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Interfaz.java
 *
 * Created on 11/03/2011, 03:46:58 PM
 */

package proyectocompimusica;

import AST.Errores;
import abc.notation.MusicElement;
import abc.notation.Tune;
import abc.parser.TuneParser;
import abc.ui.swing.JScoreComponent;
import java.awt.BorderLayout;
import java.awt.Label;
import java.awt.Rectangle;
import java.awt.TextArea;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.SpringLayout;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

/**
 *
 * @author Eddy
 */
public class Interfaz extends javax.swing.JFrame {

    public String NombreProyecto;
    public String PathProyecto;
    
    DefaultMutableTreeNode top =new DefaultMutableTreeNode("root");
    
    public static String Entrada;

    public LinkedList <ArchivoDeProyecto> Archivos=new LinkedList<ArchivoDeProyecto>();

    public Hashtable <String,ArchivoDeProyecto> ArchivosP=new Hashtable<String,ArchivoDeProyecto>();

    public boolean Guardados=false;


    /** Creates new form Interfaz */
    public Interfaz() {
        

        initComponents();
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("WI");
        //this.jTree1=null;
        
        
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        ImageIcon iconAP =new ImageIcon("AbrirProyecto.jpg");
        AbrirProyecto = new javax.swing.JButton();
        ImageIcon iconGP=new ImageIcon("GuardarProyecto.jpg");
        GuardarProyecto = new javax.swing.JButton();
        ImageIcon iconAA=new ImageIcon("Agregar Archivo.jpg");
        AgregarArchivo = new javax.swing.JButton();
        ImageIcon iconEA=new ImageIcon("EliminarArchivo.jpg");
        EliminarArchivo = new javax.swing.JButton();
        ImageIcon iconC=new ImageIcon("Correr.jpg");
        Correr = new javax.swing.JButton();
        jTP = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTree1 = new javax.swing.JTree();
        jScrollPane1 = new javax.swing.JScrollPane();
        Tconsola = new javax.swing.JTextArea();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem2 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                formKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                formKeyTyped(evt);
            }
        });

        AbrirProyecto = new javax.swing.JButton(iconAP);
        AbrirProyecto.setText("B2");
        AbrirProyecto.setText("Abrir Proyecto");
        AbrirProyecto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AbrirProyectoActionPerformed(evt);
            }
        });

        GuardarProyecto = new javax.swing.JButton(iconGP);
        GuardarProyecto.setText("B3");
        GuardarProyecto.setText("Guardar Archivo");
        GuardarProyecto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GuardarProyectoActionPerformed(evt);
            }
        });

        AgregarArchivo = new javax.swing.JButton(iconAA);
        AgregarArchivo.setText("B4");
        AgregarArchivo.setText("Agregar Archivo");
        AgregarArchivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AgregarArchivoActionPerformed(evt);
            }
        });

        EliminarArchivo=new javax.swing.JButton(iconEA);
        EliminarArchivo.setText("B5");
        EliminarArchivo.setText("Eliminar Archivo");
        EliminarArchivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                EliminarArchivoActionPerformed(evt);
            }
        });

        Correr = new javax.swing.JButton(iconC);
        Correr.setText("B6");
        Correr.setText("Play");
        Correr.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CorrerActionPerformed(evt);
            }
        });

        jTree1.setModel(new javax.swing.tree.DefaultTreeModel(top));
        jTree1.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() {
            public void treeExpanded(javax.swing.event.TreeExpansionEvent evt) {
                jTree1TreeExpanded(evt);
            }
            public void treeCollapsed(javax.swing.event.TreeExpansionEvent evt) {
            }
        });
        jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                jTree1ValueChanged(evt);
            }
        });
        jScrollPane2.setViewportView(jTree1);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 442, Short.MAX_VALUE)
        );

        Tconsola.setText("\n");
        Tconsola.setColumns(20);
        Tconsola.setRows(5);
        Tconsola.addInputMethodListener(new java.awt.event.InputMethodListener() {
            public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) {
                TconsolaInputMethodTextChanged(evt);
            }
            public void caretPositionChanged(java.awt.event.InputMethodEvent evt) {
            }
        });
        Tconsola.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                TconsolaKeyPressed(evt);
            }
        });
        jScrollPane1.setViewportView(Tconsola);

        jMenu1.setText("Archivo");
        jMenu1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu1ActionPerformed(evt);
            }
        });

        jMenuItem1.setText("Abrir Archivo");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Ayuda");

        jMenuItem2.setText("Acerca de");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem2);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(AbrirProyecto)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(GuardarProyecto)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(AgregarArchivo)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(EliminarArchivo)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(Correr))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 559, Short.MAX_VALUE)
                                .addGap(234, 234, 234))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jTP, javax.swing.GroupLayout.DEFAULT_SIZE, 787, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(AbrirProyecto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(GuardarProyecto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(AgregarArchivo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(EliminarArchivo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(Correr, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jTP, javax.swing.GroupLayout.DEFAULT_SIZE, 442, Short.MAX_VALUE)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    public static void prueba()
    {
        
        try {
            System.in.read();
        } catch (IOException ex) {
            Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
    private void GuardarProyectoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_GuardarProyectoActionPerformed
        // TODO add your handling code here:
         JFileChooser selectorDeProyecto=new JFileChooser();
         
      /*  if(this.PathProyecto!="")
        {
            selectorDeProyecto=new JFileChooser(this.PathProyecto);
        }
        

        selectorDeProyecto.setFileSelectionMode(JFileChooser.FILES_ONLY);

        javax.swing.filechooser.FileFilter filtro = new FileNameExtensionFilter("Proyecto (.CGNA)", "CGNA");
        selectorDeProyecto.setFileFilter(filtro);
        selectorDeProyecto.showSaveDialog(this);
        */
        
        
        if(this.jTP.getComponents()!=null)
        {
        String  PestañaActual=jTP.getTitleAt(jTP.getSelectedIndex());
                
        if(this.ArchivosP.get(PestañaActual)!=null)
        {
            File prueba;
            FileWriter fwp;
            BufferedWriter bop;
          
         
            
          File proFile=new File(this.ArchivosP.get(PestañaActual).Path);
          this.PathProyecto= proFile.getParent();
          
        try{
              FileWriter fos=new FileWriter(proFile);
              BufferedWriter bou=new BufferedWriter(fos);
              int i;
              
                bou.write(this.ArchivosP.get(PestañaActual).ContentidoArchivo.getText());
                bou.newLine();              

              
              bou.close();
              fos.close();
        }
        catch(IOException E){}
        }
        this.Guardados=true;
             
        }
        
    }//GEN-LAST:event_GuardarProyectoActionPerformed

    private void AgregarArchivo(FileReader AR,String NombreA,String PathArchivo,String pt,String mu)
    {
        ArchivoDeProyecto FileOfP;
        try {
            FileReader temp=new FileReader(new File(""));
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        BufferedReader BF=new BufferedReader(AR);
        String TXT="";
        String TXTa="";
        try {
              while((TXTa=BF.readLine())!=null)
              {
                TXT=TXT+TXTa+"\n";
              }
        } catch (IOException ex) {
             Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
       }
        
       this.jTP.add(NombreA,new JTextArea(TXT));                           
       this.ArchivosP.put(NombreA,null);
                            
       Tune tune = new TuneParser().parse(pt);
       JScoreComponent scoreUI =new JScoreComponent();
       scoreUI.setTune(tune);
       
                            
       Tune tune1 = new TuneParser().parse(pt+"b");
       JScoreComponent scoreUI1 =new JScoreComponent();
       scoreUI1.setTune(tune1);
       
      
       
      JPanel T=new JPanel();    
      JScrollPane sro=new  JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);       
      
      sro.setViewportView(T);
      
       BorderLayout a=new BorderLayout();
      
       
       T.setLayout(a);
       T.setSize(450, 350);
       //T.setLocation(100, 100);
       T.add(scoreUI1);
       scoreUI1.setBounds(0,100, scoreUI1.getWidth(), scoreUI1.getHeight());
       T.add(scoreUI);
       scoreUI.setBounds(0,200, scoreUI.getWidth(), scoreUI.getHeight());
       
       //SpringLayout springLayout = new SpringLayout();
       //T.setLayout(springLayout);
             
       this.jTP.add(NombreA+" Pentagrama",sro);
      
      
    }
    
    private void AgregarArchivo(ArchivoDeProyecto Real)
    {
        ArchivoDeProyecto FileOfP;
        FileReader temp=null;
        try {
             temp=new FileReader(new File(Real.Path));
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        BufferedReader BF=new BufferedReader(temp);
        String TXT="";
        String TXTa="";
        try {
              while((TXTa=BF.readLine())!=null)
              {
                TXT=TXT+TXTa+"\n";
              }
        } catch (IOException ex) {
             Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
       }
        
       JTextArea txtA=new JTextArea(TXT);
       JScrollPane nt=new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
       txtA.setEditable(true);
       txtA.setEnabled(true);
       nt.setViewportView(txtA);
       txtA.repaint();
       this.jTP.add(Real.Nombre,nt);    
       
       Real.ContentidoArchivo=txtA;
       this.ArchivosP.put(Real.Nombre,Real);
                            
       LinkedList <Tune> TL=new LinkedList();
       LinkedList <JScoreComponent> LS=new LinkedList();
       int i=0;
       
       JPanel T=new JPanel();    
      JScrollPane sro=new  JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);       
      
      sro.setViewportView(T);
      
       BorderLayout a=new BorderLayout();
      
       
       T.setLayout(a);
       T.setSize(450, 350);
       
       for(i=0;i<Real.Pentagramas.size();i++)
       {
           Tune tunea=new TuneParser().parse(Real.Pentagramas.get(i));
           JScoreComponent scoreUIA=new JScoreComponent();
           scoreUIA.setTune(tunea);
           TL.add(tunea);
           LS.add(scoreUIA);
       
       }
       
       for(i=LS.size()-1;i>=0;i--)
       {
           T.add(LS.get(i));
           LS.get(i).setBounds(0, (i+1)*150, LS.get(i).getWidth(), LS.get(i).getHeight());
           
       }
             
       
       //Tune tune = new TuneParser().parse(Real.Pentagramas.get(0));
       //JScoreComponent scoreUI =new JScoreComponent();
       //scoreUI.setTune(tune);
       
      
       //T.setLocation(100, 100);       
       //T.add(scoreUI);
       //scoreUI.setBounds(0,200, scoreUI.getWidth(), scoreUI.getHeight());
       
       //SpringLayout springLayout = new SpringLayout();
       //T.setLayout(springLayout);
             
       this.jTP.add(Real.Nombre+" Pentagrama",sro);
      
      
    }
    
    private void AgregarArchivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AgregarArchivoActionPerformed
        // TODO add your handling code here:
        TextArea TA=new TextArea();
        
        TA.setEditable(true);        
        ArchivoDeProyecto prueba=new ArchivoDeProyecto();
        
        JFileChooser archivoCGNA=new JFileChooser();
        archivoCGNA.setFileSelectionMode(JFileChooser.FILES_ONLY);

        javax.swing.filechooser.FileFilter filtro = new FileNameExtensionFilter("Paritura (.CNGA)", "CNGA");
        archivoCGNA.setFileFilter(filtro);
        archivoCGNA.showOpenDialog(this);
        
        if(archivoCGNA.getSelectedFile()!=null)
        {
        FileReader ACGNA;
        try {
            ACGNA = new FileReader(archivoCGNA.getSelectedFile());
             ParserPro pp=new ParserPro();        
        
             ScannerPro sp=new ScannerPro(ACGNA);                   
             pp.setScanner(sp);
            try {
                pp.parse();
                if(!pp.action_obj.Errores)
                {
                    if(pp.action_obj.res.CargarTS())
                    {
                            if(pp.action_obj.res.Traduccion())
                            {
                            ACGNA.close();
                             String Pt=pp.action_obj.res.Traduccion;
                             String Mus=pp.action_obj.res.TraduccionABC4J;   
                            
                             String NombreA=archivoCGNA.getSelectedFile().getName();
                             String PathArchivo=archivoCGNA.getSelectedFile().getAbsolutePath();
                             FileReader V1=new FileReader(archivoCGNA.getSelectedFile());
                             
                             
                             ArchivoDeProyecto temp=new ArchivoDeProyecto(archivoCGNA.getSelectedFile().getAbsolutePath(),archivoCGNA.getSelectedFile().getName(),pp.action_obj.res.Pentagramas,pp.action_obj.res.Vs,pp.action_obj.res.Traduccion);
                             AgregarArchivo(temp); 
                             //AgregarArchivo(V1,NombreA,PathArchivo,pp.action_obj.res.TraduccionABC4J,pp.action_obj.res.Traduccion);
                           }
                            
                    }
                    else
                    {
                    
                             ArchivoDeProyecto temp=new ArchivoDeProyecto(archivoCGNA.getSelectedFile().getAbsolutePath(),archivoCGNA.getSelectedFile().getName(),null,null,"");
                             AgregarArchivo(temp);
                    
                    }
                }
            } catch (Exception ex) {
                Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
        }
        }
    }//GEN-LAST:event_AgregarArchivoActionPerformed

    private void EliminarArchivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_EliminarArchivoActionPerformed
        // TODO add your handling code here:
        if(this.jTP.getTabCount()>0){
        int a=this.jTP.getSelectedIndex();
        String Clave=this.jTP.getTitleAt(a);
        this.ArchivosP.remove(Clave);
        this.jTP.remove(a);
        }
        this.Guardados=false;
    }//GEN-LAST:event_EliminarArchivoActionPerformed

    private void AbrirProyectoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AbrirProyectoActionPerformed
        // TODO add your handling code here:
        JFileChooser CargarProy=new JFileChooser();
        javax.swing.filechooser.FileFilter filtro = new FileNameExtensionFilter("Proyecto (.xml)", "xml");
        CargarProy.setFileFilter(filtro);
        CargarProy.setFileSelectionMode(JFileChooser.FILES_ONLY);
        CargarProy.showOpenDialog(this);
        if(CargarProy.getSelectedFile()!=null){
        File Proyecto=CargarProy.getSelectedFile();
            try {
                
                ScannerProy scp=new ScannerProy(new FileReader(Proyecto));
                ParserProy pap=new ParserProy();
                pap.setScanner(scp);
                try {
                    pap.parse();
                    if(pap.action_obj.res!=null)
                    {
                        
                        System.out.println("--xml!--"+pap.action_obj.res);
                        //this.jTree1=new JTree();
                       this.top.add(pap.action_obj.res);
                       
                    }
                    else
                    {
                        System.out.println("--Error en el ARchivo de proyecto    --");
                    }
                    
                } catch (Exception ex) {
                    Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
            }
        
        
        }    
        
        this.Guardados=true;
    }//GEN-LAST:event_AbrirProyectoActionPerformed

    public void CargarC()
    {
    }
    private void CorrerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CorrerActionPerformed
        // TODO add your handling code here:
        boolean rese=false;
        String tabselected=this.jTP.getTitleAt(this.jTP.getSelectedIndex());
        ArchivoDeProyecto ar=this.ArchivosP.get(tabselected);
        if(ar!=null)
        {
            String MusicaTocar=ar.MusicaAV;
            File aRun=new File(ar.Path);
            try {
                FileReader aRunF=new FileReader(aRun);
                ScannerPro sRun=new ScannerPro(aRunF);
                ParserPro pRun=new ParserPro();
                pRun.setScanner(sRun);
                try {
                    pRun.parse();
                    if(!pRun.action_obj.Errores)
                    {
                    if(pRun.action_obj.res.CargarTS()){
                    if(pRun.action_obj.res.Traduccion())    {
                    ar.Pentagramas=pRun.action_obj.res.Pentagramas;
                    ar.Musica=pRun.action_obj.res.Vs;
                    ar.MusicaAV=pRun.action_obj.res.Traduccion;
                    MusicaTocar=ar.MusicaAV;}
                    else
                    {
                        rese=true;
                    }
                    
                    }
                    else{rese=true;}
                    
                    }
                    else{rese=true;}
                    aRunF.close();
                    
                } catch (Exception ex) {
                    Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
                }
                
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
            }
            if(!rese)
            {
            fuge a=new fuge(MusicaTocar);        
            a.start();
            }
            else
            {
                JOptionPane.showMessageDialog(null," Existen errores en el archivo: "+ar.Path+" Para mas informacion esta el archivo "+ar.Path+".html");
                Errores.ImprimirErrores(ar.Path+".html");
            }
            
        }
    }//GEN-LAST:event_CorrerActionPerformed

    private void formKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_formKeyPressed
        // TODO add your handling code here:
        
        if(java.awt.event.KeyEvent.VK_F6==evt.getKeyCode())
        {
        
        }
    }//GEN-LAST:event_formKeyPressed

    private void formKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_formKeyTyped
        // TODO add your handling code here:
                System.out.println("----LOL"+evt.getKeyCode());
    }//GEN-LAST:event_formKeyTyped

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        // TODO add your handling code here:
       
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
        // TODO add your handling code here:
        javax.swing.JOptionPane.showMessageDialog(this," 1er Proyecto Compliadores 2 \n 2004-13243 \n Eddy Rene Cordon Leiva");
    }//GEN-LAST:event_jMenuItem2ActionPerformed

    private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenu1ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jMenu1ActionPerformed

    private void TconsolaInputMethodTextChanged(java.awt.event.InputMethodEvent evt) {//GEN-FIRST:event_TconsolaInputMethodTextChanged
        // TODO add your handling code here:
        if(evt.getWhen()==evt.INPUT_METHOD_TEXT_CHANGED)
        System.out.println("Cambio de text");
    }//GEN-LAST:event_TconsolaInputMethodTextChanged

    private void TconsolaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TconsolaKeyPressed
        // TODO add your handling code here:
        if(evt.getKeyCode()==evt.VK_ENTER)
        {
            int a=this.Tconsola.getText().lastIndexOf("\n");
            String hola=this.Tconsola.getText().substring(a+1);
            this.Entrada=hola;
        }
    }//GEN-LAST:event_TconsolaKeyPressed

private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTree1ValueChanged
// TODO add your handling code here:
    TreePath p=this.jTree1.getSelectionPath();
    if(p==null){}
    else
    {
        if(p.getParentPath()!=null)
        {
        if(p.getParentPath().getLastPathComponent().toString().equals("DIRECCION"))
        {
           ScannerPro sp;
           ParserPro pp=new ParserPro();
           File arc=new File(p.getLastPathComponent().toString());
            try {
                sp=new ScannerPro(new FileReader(arc));           
            
                pp.setScanner(sp);
            
                try {
                    pp.parse();
                    boolean res1=false;
                    System.out.println(pp.action_obj.res+"-----");
                    if(!pp.action_obj.Errores)
                    {
                    res1=pp.action_obj.res.CargarTS();
                    if(res1)
                    {
                        pp.action_obj.res.Traduccion();
                             String Pt=pp.action_obj.res.Traduccion;
                             String Mus=pp.action_obj.res.TraduccionABC4J;   
                             ArchivoDeProyecto ar=new ArchivoDeProyecto(arc.getAbsolutePath(),arc.getName(),pp.action_obj.res.Pentagramas,pp.action_obj.res.Vs,pp.action_obj.res.Traduccion);
                             this.AgregarArchivo(ar);
                             //this.AgregarArchivo(new  FileReader(arc), arc.getName(), arc.getAbsolutePath(),Mus, Pt);
                    
                    }
                    }
                    else
                    {
                             ArchivoDeProyecto ar=new ArchivoDeProyecto(arc.getAbsolutePath(),arc.getName(),null,null,"");
                             this.AgregarArchivo(ar);
                    }
                    } catch (Exception ex) {
                Logger.getLogger(ProyectoCompiMusica.class.getName()).log(Level.SEVERE, null, ex);
                javax.swing.JOptionPane.showMessageDialog(null, "Error"+ex.toString());
                    }
          
         
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(ProyectoCompiMusica.class.getName()).log(Level.SEVERE, null, ex);
                        javax.swing.JOptionPane.showMessageDialog(null, "Error"+ex.toString());
                    }
        }
        }
    }
}//GEN-LAST:event_jTree1ValueChanged

private void jTree1TreeExpanded(javax.swing.event.TreeExpansionEvent evt) {//GEN-FIRST:event_jTree1TreeExpanded
// TODO add your handling code here:
  
}//GEN-LAST:event_jTree1TreeExpanded

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Interfaz().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton AbrirProyecto;
    private javax.swing.JButton AgregarArchivo;
    private javax.swing.JButton Correr;
    private javax.swing.JButton EliminarArchivo;
    private javax.swing.JButton GuardarProyecto;
    public static javax.swing.JTextArea Tconsola;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTabbedPane jTP;
    private javax.swing.JTree jTree1;
    // End of variables declaration//GEN-END:variables

}
